import javax.annotation.Resource;
import javax.jms.*;
import org.jboss.arquillian.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import com.acme.ejb.MessageEcho;
import com.acme.util.jms.QueueRequestor;
@RunWith(Arquillian.class)
public class InjectionTestCase {
@Deployment
public static JavaArchive createTestArchive() {
return ShrinkWrap.create(JavaArchive.class, "test.jar")
.addClasses(MessageEcho.class, QueueRequestor.class);
}
@Resource(mappedName = "/queue/DLQ")
private Queue dlq;
@Resource(mappedName = "/ConnectionFactory")
private ConnectionFactory factory;
@Test
public void shouldBeAbleToSendMessage() throws Exception {
String messageBody = "ping";
Connection connection = factory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
QueueRequestor requestor = new QueueRequestor((QueueSession) session, dlq);
connection.start();
Message request = session.createTextMessage(messageBody);
Message response = requestor.request(request, 5000);
Assert.assertEquals("Should have responded with same message", messageBody, ((TextMessage) response).getText());
}
}